打造自己的项目构建-脚手架

# 打造自己的项目构建-脚手架

[TOC]

# 一、基本搭建

# 1.1 commander模块

参考教程:Commander.js 中文文档(cli必备) (opens new window)

$ mkdir lin-cli
$ cd lin-cli
// 用来编写指令和处理命令行
$ yarn add commander
$ dir	// node_modules  package.json  yarn.lock
1
2
3
4
5
  • 具体用法:
// 导入commander
const program = require("commander");
// 定义指令
program
	// 设置当前脚本的版本信息,会自动给当前命令添加一个-V,--version的选项
	// 设置第二个参数则可以使用-v, -V, --version选项
	// 默认-h参看使用说明
    .version('0.0.1','-v, -V, --version')
	// 设置使用说明
	.usage('this is a instruction')
	// 设置命令参数
	// [v]可选形参,<v>必选形参
	.arguments('<v>')
	// 设置选项,第二个参数是说明
	.option('-a, --all','see all messages', function(){
    	// 调用该option处理的事件
    	console.log('you used --all!');
	})

	// 设置命令
    .command('init', 'Generate a new project from a template')
    .action(() => {
    // 回调函数
})
// 解析命令行参数
program.parse(process.argv);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 1.2 chalk模块

// 用来修改控制台输出内容样式
$ yarn add chalk
1
2
  • 具体用法:
const chalk = require('chalk');

const error = chalk.bold.red;
const warning = chalk.keyword('orange');
 
console.log(error('Error!'));
console.log(warning('Warning!'));
1
2
3
4
5
6
7

# 1.3 fs模块

参考教程:https://juejin.im/post/5b9768b2e51d450e9942eb98#heading-49

fs是filesystem的缩写,提供本地文件的读写能力,无需额外安装。

  • 具体使用
const fs = require('fs');

// 输出当前目录路径
console.log(__dirname);
let files = fs.readdirSync(__dirname);
// 输出当前目录下的文件
console.log(files);
1
2
3
4
5
6
7

# 二、项目构建

# 三、发布

发布到npm官网 (opens new window)

# 3.1 注意事项

  • 在要执行的具体脚本的最开始加上
// index.js
// 用来系统自动添加环境变量
#!/usr/bin/env node
1
2
3
  • 在项目的package.json文件的bin字段中添加脚本的路径。

    每次有改动,都应该改动版本并重新发布。

"name": "guli-cli",
"version": "1.0.0",
"bin": {
    "guli": "bin/index.js"
}
1
2
3
4
5
  • 如果曾经该过其他镜像源,可以使用
$ npm publish --registry http://registry.npmjs.org
1

# 3.2 发布

$ npm login
$ npm publish
1
2

# 3.3 安装使用

// global位置不能乱
$ yarn global add guli-cli 

// 使用时可以直接以guli开头
1
2
3
4